package cn.demoncat.util.webmagic;

import cn.demoncat.util.web.UrlUtil;
import us.codecraft.webmagic.Page;
import us.codecraft.webmagic.Site;
import us.codecraft.webmagic.processor.PageProcessor;

/**
 * WebMagic 页面处理器
 *
 * @author 延晓磊
 * @since 2022年09月01日
 */
public abstract class WebMagicProcessor implements PageProcessor {

    // 站点
    private final Site site = Site.me();

    /**
     * 页面处理
     *
     * 1、解析页面数据
     * 2、通过 page.putField("k", v) 将结果传递到 Pipeline
     * 3、通过 page.addTargetRequests(url) 挖掘更多的页面（相当于传参url并递归本方法）
     *
     * @param page  页面数据
     */
    @Override
    public abstract void process(Page page);

    /**
     * 获取站点配置
     *
     * @return
     */
    @Override
    public Site getSite() {
        return site;
    }

    /**
     * 设置Domain（生效cookie）
     *
     * @param domain
     * @return
     */
    public WebMagicProcessor setDomain(String domain) {
        this.site.setDomain(domain);
        return this;
    }

    /**
     * 添加Cookie（须设置domain）
     *
     * @param name
     * @param value
     * @return
     */
    public WebMagicProcessor addCookie(String name, String value) {
        this.site.addCookie(name, value);
        return this;
    }

    /**
     * 添加Header
     *
     * @param name
     * @param value
     * @return
     */
    public WebMagicProcessor addHeader(String name, String value) {
        this.site.addHeader(name, value);
        return this;
    }

    /**
     * 设置字符集
     *
     * @param charset
     * @return
     */
    public WebMagicProcessor setCharset(String charset) {
        this.site.setCharset(charset);
        return this;
    }
}
